package main

import "fmt"

func main() {
	//初始化数组
	var arr1 [3]int = [3]int{1, 2, 3}
	fmt.Println("arr1 = ", arr1)

	var arr2 = [3]int{5, 6, 7}
	fmt.Println("arr2 = ", arr2)
	//arr2[4]

	var arr3 = [...]int{8, 9, 10}
	fmt.Println("arr3 = ", arr3)

	var arr4 = [...]int{1: 11, 0: 22, 4: 44}
	fmt.Println("arr4 = ", arr4)

	strArr5 := [...]string{1: "tom", 3: "jerry"}
	fmt.Println("arr5 = ", strArr5)

	/*
		切片是一个引用类型

		1：通过下标的方式获得数组或者切片的一部分；
			arr[0:3] or slice[0:3]
		2：使用字面量初始化新的切片；
			slice := []int{1, 2, 3}
		3：使用关键字 make 创建切片
			slice := make([]int, 10)

	*/
	slice := strArr5[1:3]                                                           // 引用数组strArr的起始下标为1，结尾下标为3（但是不包含3）
	fmt.Printf("slice的元素是：%v, 元素个数：%v, slice的容量：%v", slice, len(slice), cap(slice)) // 切片的容量是可以动态变化的

}
